import request from "@/utils/request";

// const USER_BASE_URL = "/api/v1/users";
const USER_BASE_URL = "/core/stockMove";

const inventoryApi = {
  /**
   * 查询用料
   *
   * @param queryParams 查询参数
   */
  getPage(queryParams: inventoryPageQuery) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, PageResult<inventoryPageQuery[]>>({
      url: `${USER_BASE_URL}/getStockMoveList?object=${query}`,
      method: "get",
    });
  },

  /**
   * 查询移库详情
   */
  getDetail(parentCode: string) {
    return request<any, any>({
      url: `${USER_BASE_URL}/getStockMoveDetailByCode?parentCode=${parentCode}`,
      method: "get",
    });
  },

  /**
   * 修改备料
   * @param data 修改数据

   */
  update(data: inventoryPageVO) {
    return request<any, any>({
      url: `${USER_BASE_URL}/saveOrUpdateStockDetailMove`,
      method: "post",
      data,
    });
  },
  /**
   * 删除备料
   * @param data 修改数据

   */
  delete(data: inventoryPageVO) {
    return request<any, any>({
      url: `${USER_BASE_URL}/delStockMove`,
      method: "post",
      data,
    });
  },

  /**
   * 强制完成移库
   */
  forceComplete(id: number) {
    return request<any, any>({
      url: `${USER_BASE_URL}/forceStockMove`,
      method: "post",
      data: { id },
    });
  },

  /**
   * 获取生产单号
   */

  getbatchApi(queryParams: any) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, any>({
      url: `/core/tProdHead/getTProdHeadList?object=${query}`,
      method: "get",
    });
  },

  /**
   * 创建/修改移库
   */
  addStockDetailMove(queryParams: any) {
    return request<any, any>({
      url: `${USER_BASE_URL}/addStockDetailMove`,
      method: "post",
      data: queryParams,
    });
  },
};

export default inventoryApi;

/*用料*/
export interface inventoryPageQuery extends PageQuery {
  /* 生产单ID*/
  batch?: string;
  /* 产品名称*/ /* 物料名称*/ productCode?: string;
  /* 物料名称*/
  // sourceCode?: string;

  //移库状态
  status?: number;
  // 移库单号
  code?: string;
  // 仓管
  warehouseFrom?: string;
  // 生产日期
  timeScopes?: string[];
}

/** 生产单主表信息 */
export interface inventoryPageVO {
  // 分页大小
  pageSize?: number;

  // 当前页码
  pageNum?: number;

  // 时间范围
  timeScopes?: any; // 需要根据实际业务逻辑确定具体类型

  // 唯一标识
  id?: number;

  // 代码
  code?: string;

  // 分类
  category?: number;

  // 产品代码
  productCode?: string;

  // 产品名称
  productName?: string;

  // 仓库来源
  warehouseFrom?: any; // 需要根据实际业务逻辑确定具体类型

  // 仓库来源名称
  warehouseNameFrom?: string;

  // 仓库去向
  warehouseTo?: any; // 需要根据实际业务逻辑确定具体类型

  // 仓库去向名称
  warehouseNameTo?: string;

  // 批次
  batch?: string;

  // 总数量
  totalQty?: number;

  // 移动数量
  moveQty?: number;

  // 单位
  unit?: string;

  // 状态
  status?: number;

  // 移动日期
  moveDate?: Date | string; // 可以是Date对象或字符串，根据实际使用场景确定

  // 移动用户
  moveUser?: any; // 需要根据实际业务逻辑确定具体类型，可能是用户ID或对象

  // 移动用户名称
  moveName?: string;

  //生产日期
  prodDate?: string;

  // 创建时间
  createTime?: string; // 假设为字符串格式的时间戳

  // 创建用户
  createUser?: number; // 假设为用户ID

  // 创建用户名称
  createName?: string;

  // 修改时间
  modifyTime?: string; // 假设为字符串格式的时间戳

  // 修改用户
  modifyUser?: number; // 假设为用户ID

  // 修改用户名称
  modifyName?: string;

  // 是否删除
  isDelete?: number;

  // 来源名称
  sourceName?: string;
}

/** 生产单主表信息 */
export interface inventoryForm {
  code?: string; // 移库单号
  batch?: string; // 生产单号
  productCode?: string; // 生产产品，这里假设为any，具体类型根据optionsContact定义
  productName?: string; // 生产产品，这里假设为any，具体类型根据optionsContact定义
  prodDate?: string; // 生产日期，格式为YYYY-MM-DD
  stockMoveDetailList?: inventoryFormPro[]; // 移库详情列表，具体结构取决于inventoryFormPro定义
  moveCategory?: string; // 移库类别
  category?: string; // 移库类别
  moveDate?: string; //移库时间
  remark?: string; // 备注
}

export interface inventoryFormPro {
  productCode?: string; // 原材料编号
  productName?: any; // 原材料名称，具体类型取决于options结构
  totalQty?: number; // 总移库数量（kg）
  warehouseFrom?: string; // 仓库来源，具体类型取决于options结构
  warehouseNameFrom?: string; // 仓库来源，具体类型取决于options结构
  warehouseTo?: string; // 仓库来源，具体类型取决于options结构
  warehouseNameTo?: string; // 仓库来源，具体类型取决于options结构
  remark?: string; // 备注
}

export interface TableDataType {
  productCode?: string; // 原材料编号
  productName?: string; // 原材料名称
  totalQty?: number; // 总移库数量(KG)
  moveQty?: number | null; // 已移库数量(KG)，可能为null
  completeQty?: number | null; //移库中数量
  warehouseFrom?: string; // 仓库来源，具体类型取决于options结构
  warehouseNameFrom?: string; // 仓库来源，具体类型取决于options结构
  warehouseTo?: string; // 仓库来源，具体类型取决于options结构
  warehouseNameTo?: string; // 仓库来源，具体类型取决于options结构
  remark?: string; // 备注
  unit?: string;
}
